// 存在的问题和json.Stringify 一样存在很多的问题

// 手写一个简单版的clone
let obj = {
  a: {
    b: 2,
    c: [
      1,
      2,
      {
        d: "good",
      },
    ],
  },
};

function deepClone(target) {
  if (typeof target === "object" && target !== null) {
    const cloneTarget = Array.isArray(target) ? [] : {};
    for (let props in target) {
      // 用来判断某个对象是否含有指定的属性的布尔值 Boolean。
      // console.log(typeof obj["a"] === "object");
      if (typeof target[props] === "object") {
        cloneTarget[props] = deepClone(target[props]);
      }
    }
    return cloneTarget;
  } else {
    // 如果是基础类型直接返回就好了
    return target;
  }
}

let obj2 = deepClone(obj);
console.log(obj2);
obj2.a.c[2].d = "this";
console.log(obj);
